package com.dyc.caradvertisting.api;

import com.dyc.caradvertisting.bean.resp.ClientBean;
import com.dyc.caradvertisting.bean.resp.GoodsBean;
import com.dyc.caradvertisting.bean.resp.GoodsD;
import com.dyc.caradvertisting.bean.resp.RespClientBean;
import com.dyc.caradvertisting.bean.resp.SettBean;
import com.dyc.caradvertisting.constants.Constant;
import com.njh.tools.bean.ResultBean;


import java.util.List;

import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Path;
import rx.Observable;

/**
 * Created by niejiahuan on 16/10/26.
 *
 * 用户信息操作API
 */

public interface ClientService {
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean<RespClientBean>> reqUserlogin(@Path(Constant.ACT) String path,
                                                        @Field(Constant.ACT) String act,
                                                        @Field(Constant.PARAM) String param,
                                                        @Field(Constant.SIGN) String sign,
                                                        @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqUserSendMessage(@Path(Constant.ACT) String path,
                                           @Field(Constant.ACT) String act,
                                           @Field(Constant.PARAM) String param,
                                           @Field(Constant.SIGN) String sign,
                                           @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqUserRegister(@Path(Constant.ACT) String path,
                                     @Field(Constant.ACT) String act,
                                     @Field(Constant.PARAM) String param,
                                     @Field(Constant.SIGN) String sign,
                                     @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqUsermodInfo(@Path(Constant.ACT) String path,
                                     @Field(Constant.ACT) String act,
                                     @Field(Constant.PARAM) String param,
                                     @Field(Constant.SIGN) String sign,
                                     @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqChangePassword(@Path(Constant.ACT) String path,
                                     @Field(Constant.ACT) String act,
                                     @Field(Constant.PARAM) String param,
                                     @Field(Constant.SIGN) String sign,
                                     @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean<List<GoodsBean>>> reqGoodsList(@Path(Constant.ACT) String path,
                                                   @Field(Constant.ACT) String act,
                                                   @Field(Constant.PARAM) String param,
                                                   @Field(Constant.SIGN) String sign,
                                                   @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean<GoodsD>> reqGoodsDetails(@Path(Constant.ACT) String path,
                                                   @Field(Constant.ACT) String act,
                                                   @Field(Constant.PARAM) String param,
                                                   @Field(Constant.SIGN) String sign,
                                                   @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean<List<SettBean>>> reqBindSetList(@Path(Constant.ACT) String path,
                                                          @Field(Constant.ACT) String act,
                                                          @Field(Constant.PARAM) String param,
                                                          @Field(Constant.SIGN) String sign,
                                                          @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean<SettBean>> reqBindSetDetails(@Path(Constant.ACT) String path,
                                                  @Field(Constant.ACT) String act,
                                                  @Field(Constant.PARAM) String param,
                                                  @Field(Constant.SIGN) String sign,
                                                  @Field(Constant.STRTIME) String strtime);
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqBindSet(@Path(Constant.ACT) String path,
                                                       @Field(Constant.ACT) String act,
                                                       @Field(Constant.PARAM) String param,
                                                       @Field(Constant.SIGN) String sign,
                                                       @Field(Constant.STRTIME) String strtime);

    /**
     * 解除设备绑定
     * @param path
     * @param act
     * @param param
     * @param sign
     * @param strtime
     * @return
     */
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqRemoveBindSet(@Path(Constant.ACT) String path,
                                      @Field(Constant.ACT) String act,
                                      @Field(Constant.PARAM) String param,
                                      @Field(Constant.SIGN) String sign,
                                      @Field(Constant.STRTIME) String strtime);
    /**
     * 解除设备绑定
     * @param path
     * @param act
     * @param param
     * @param sign
     * @param strtime
     * @return
     */
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqGainLinkMain(@Path(Constant.ACT) String path,
                                            @Field(Constant.ACT) String act,
                                            @Field(Constant.PARAM) String param,
                                            @Field(Constant.SIGN) String sign,
                                            @Field(Constant.STRTIME) String strtime);
    /**
     * 解除设备绑定
     * @param path
     * @param act
     * @param param
     * @param sign
     * @param strtime
     * @return
     */
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqChangeLinkMain(@Path(Constant.ACT) String path,
                                             @Field(Constant.ACT) String act,
                                             @Field(Constant.PARAM) String param,
                                             @Field(Constant.SIGN) String sign,
                                             @Field(Constant.STRTIME) String strtime);
    /**修改用户信息
     * @param path
     * @param act
     * @param param
     * @param sign
     * @param strtime
     * @return
     */
    @FormUrlEncoded
    @POST("api/{"+Constant.ACT+"}")
    Observable<ResultBean> reqChangeUserInfo(@Path(Constant.ACT) String path,
                                             @Field(Constant.ACT) String act,
                                             @Field(Constant.PARAM) String param,
                                             @Field(Constant.SIGN) String sign,
                                             @Field(Constant.STRTIME) String strtime);

}